Skip to content

Major Feature Update (Interviews, GitHub Sync, & Analytics)#2

Merged
DongDuong2001 merged 4 commits into
mainfrom
feat/major-update-features
May 12, 2026
Merged

Major Feature Update (Interviews, GitHub Sync, & Analytics)#2
DongDuong2001 merged 4 commits into
mainfrom
feat/major-update-features

Conversation

@DongDuong2001
Copy link
Copy Markdown
Collaborator

@DongDuong2001 DongDuong2001 commented May 12, 2026

This pull request brings several highly requested "Major Update" capabilities to the CV Builder platform, fulfilling Features 1 to 3 from our roadmap. It introduces standalone application tools for interview prep, a smart integration for auto-generating STAR achievements from GitHub, and a tracking system to give users analytics on their public resumes.

Features & Changes

1. Feature #1: AI Mock Interviews

Schema Updates: Added mockInterviews table to the database to track interviews and scores per job application.
Backend Actions: Added mock-interview.ts to coordinate with llama-3.3-70b for generating contextual job-specific questions, and evaluating user answers in real-time.
Interactive UI: Added mock-interview-client.tsx using the native Web Speech API to allow users to verbally dictate their answers to the AI.
Routing: Implemented /applications/[id]/interview/page.tsx for standalone interview sessions linked directly to tracked job applications.

2. Feature #2: GitHub Auto-Achievement Generator

Backend Actions: Added github-achievements.ts to securely fetch public user repositories from the GitHub API and generate targeted, STAR-method styled bullet points using Groq's LLM.
Resume Integration: Injected a GithubSyncModal component into the projects-form.tsx block, allowing users to effortlessly pull, adapt, and inject high-quality achievements straight into their resume drafts based on their open-source history.

3. Feature #3: Public Resume Analytics (The Recruiter Tracker)

Schema Updates: Added resumeViews table to DB to log unique sessions, durations, and geographical locations.
API Endpoints: Created /api/analytics/resume-view lightweight logging endpoint.
Analytics Component: Built ResumeAnalyticsTracker to passively log unique impressions using the native navigator.sendBeacon upon unmounting (view exit).
Public Route Injection: Dropped the passive tracker into the /r/[id]/page.tsx route to secretly monitor recruiters viewing users' tailored public links.

Testing & Checks

  • Database Schema Migration pushed effectively to NEON/Vercel Postgres (drizzle-kit push --force).
  • Linter passed correctly: no unresolved variables or strict typing inconsistencies.
  • Type definitions check has 0 errors.

Summary by CodeRabbit

Release Notes

New Features

  • Interactive mock interview feature with AI-generated questions, answer evaluation, and feedback
  • GitHub project auto-sync to populate resume with top repositories
  • Resume view analytics to track visitors and engagement metrics

Bug Fixes

  • Improved error handling for form submissions and asynchronous operations

UI/UX Improvements

  • Added interview management page for practice sessions
  • Enhanced GitHub integration modal for seamless project importing

Review Change Stack

@vercel
Copy link
Copy Markdown

vercel Bot commented May 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
lab68cvbuilder Ready Ready Preview, Comment May 12, 2026 11:59am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 12, 2026

Warning

Rate limit exceeded

@DongDuong2001 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 54 minutes and 47 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 807c6753-dad0-4307-8c11-0392ba3d428e

📥 Commits

Reviewing files that changed from the base of the PR and between 93f7ab0 and 65af65f.

📒 Files selected for processing (1)
  • src/components/applications/mock-interview-client.tsx
📝 Walkthrough

Walkthrough

This PR introduces three new features to enhance the job application workflow: AI-powered mock interviews for practice, GitHub repository syncing to auto-populate resume projects, and resume view analytics. The changes include new database tables, server actions with Groq integration, client components with speech recognition, and refactored UI pages.

Changes

Job Application & Resume Enhancement

Layer / File(s) Summary
Database Schema: Mock Interviews & Resume Views
src/db/schema.ts
New tables mockInterviews and resumeViews are added with columns for questions/answers/status and view tracking; existing primary key and foreign key definitions are reformatted for consistency; relations are updated to link users to interviews and resumes to views.
GitHub Achievements Server Action
src/actions/github-achievements.ts
Authenticated, rate-limited action fetches user's public GitHub repositories, filters/sorts by stars, and uses Groq to generate resume-style project descriptions from metadata; results are normalized with generated UUIDs and returned as project objects.
Mock Interview Server Actions
src/actions/mock-interview.ts
Three server actions orchestrate the interview workflow: generateMockInterviewQuestions fetches application context and calls Groq to create a 5-question array, evaluateMockInterviewAnswer scores individual answers and updates interview state, and getMockInterview retrieves user-scoped records.
GitHub Sync Modal & Projects Form
src/components/builder/forms/github-sync-modal.tsx, src/components/builder/forms/projects-form.tsx
New GithubSyncModal accepts username input, calls the GitHub action, and appends results to resume store. ProjectsForm adds modal state and "Auto-Sync GitHub" button, with minor formatting updates to handlers for consistency.
Mock Interview UI & Page
src/components/applications/mock-interview-client.tsx, src/app/[locale]/applications/[id]/interview/page.tsx
MockInterviewClient manages multi-step interview flow with browser speech recognition, renders questions/answer panels with AI feedback and scores, and completion summary. Server page component validates application ownership and preloads existing interview data.
Resume Analytics Tracking
src/components/builder/resume-analytics-tracker.tsx, src/app/api/analytics/resume-view/route.ts, src/app/[locale]/r/[id]/page.tsx
ResumeAnalyticsTracker component captures view duration and timezone on unmount, sends payload to new analytics API route, which inserts viewer data with IP-derived identifier. Tracker is mounted on public resume pages to collect analytics.
Applications Page Updates
src/app/[locale]/applications/page.tsx
Refactors to await searchParams Promise, reformats create job/application forms and cover-letter studio actions into multiline JSX with explicit error handling, and rearranges pipeline filter/results layout for improved readability.

Sequence Diagram

sequenceDiagram
  actor User
  participant MockInterviewPage
  participant MockInterviewClient
  participant generateMockInterviewQuestions
  participant Groq as Groq API
  participant DB as Database
  participant evaluateMockInterviewAnswer

  User->>MockInterviewPage: Navigate to /applications/{id}/interview
  MockInterviewPage->>DB: Verify application ownership
  MockInterviewPage->>DB: Check for existing mockInterview
  MockInterviewPage->>MockInterviewClient: Mount with applicationId
  
  User->>MockInterviewClient: Click "Start Mock Interview"
  MockInterviewClient->>generateMockInterviewQuestions: Fetch job/resume context
  generateMockInterviewQuestions->>DB: Query application, job, resume
  generateMockInterviewQuestions->>Groq: Generate 5 interview questions
  Groq-->>generateMockInterviewQuestions: Return JSON array
  generateMockInterviewQuestions->>DB: Insert mockInterviews row
  generateMockInterviewQuestions-->>MockInterviewClient: { interviewId, questions }
  
  User->>MockInterviewClient: Answer question + click submit
  MockInterviewClient->>evaluateMockInterviewAnswer: Send answer text
  evaluateMockInterviewAnswer->>Groq: Score answer & generate feedback
  Groq-->>evaluateMockInterviewAnswer: { feedback, score }
  evaluateMockInterviewAnswer->>DB: Update answers array & status
  evaluateMockInterviewAnswer-->>MockInterviewClient: { feedback, score }
  
  MockInterviewClient->>User: Display score & AI feedback
  User->>MockInterviewClient: Navigate to next question or complete
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested labels

enhancement

Poem

🐰 A rabbit hops through GitHub's stars,
While Groq helps practice interviews near and far,
Mock questions asked with speech and care,
Analytics tracking views in the air,
Resume projects gleaming bright—
The builder's tools now shine with light! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title "Major Feature Update (Interviews, GitHub Sync, & Analytics)" directly aligns with the three major feature groups implemented: AI Mock Interviews, GitHub Auto-Achievement Generator, and Public Resume Analytics. It accurately summarizes the main changes across the changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/major-update-features

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@DongDuong2001 DongDuong2001 merged commit d6b3b15 into main May 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant